package math

import (
	"jvm/nzpJvm/instructions/base"
	"jvm/nzpJvm/runtime_area"
)

// 将局部变量变指定索引位置的int值加上指定的常量值。
// 例如 iinc 4 7 意思是将操作数栈索引位置为4的位置上的int值加上7并且放回索引位置为4的位置。
type IINC struct {
	Index uint
	Const int32
}

func (self *IINC) FetchOperands(reader *base.BytecodeReader) {
	self.Index = uint(reader.ReadInt8())
	self.Const = int32(reader.ReadInt8())
}
func (self *IINC) Execute(frame *runtime_area.Frame) {
	getInt := frame.LocalVars().GetInt(self.Index)
	newVal := getInt + self.Const
	frame.LocalVars().SetInt(self.Index, newVal)
}
